// 导入 NestJS 核心工厂类，用于创建应用实例
import { NestFactory } from '@nestjs/core';
// 导入应用根模块（NestJS 应用的入口模块）
import { AppModule } from './app.module';
// 导入验证管道（用于请求数据的自动验证和转换）
import { ValidationPipe } from '@nestjs/common';
// 导入路径处理模块（用于拼接文件路径）
import { join } from 'path';
// 导入 Express 平台的 Nest 应用类型（用于类型声明）
import { NestExpressApplication } from '@nestjs/platform-express';

// 启动函数（NestJS 应用的入口函数）
async function bootstrap() {
  // 创建基于 Express 平台的 Nest 应用实例（传入根模块 AppModule）
  const app = await NestFactory.create<NestExpressApplication>(AppModule);

  // 注册全局验证管道：
  // - transform: true 表示自动将请求参数转换为目标类型（如字符串转数字）
  app.useGlobalPipes(new ValidationPipe({ transform: true }));

  // 启用 CORS（跨域资源共享），允许前端跨域访问当前后端接口
  app.enableCors();

  // 配置静态资源目录：
  // - join(__dirname, '../uploads') 拼接 uploads 目录的绝对路径（__dirname 为当前文件目录）
  // - prefix: '/uploads' 表示通过 /uploads 路径访问该目录下的文件（如 /uploads/image.jpg）
  app.useStaticAssets(join(__dirname, '../uploads'), { prefix: '/uploads' });

  // 启动应用监听端口：
  // - 优先使用环境变量中的 PORT（如 process.env.PORT=4000），未设置时默认 3000
  await app.listen(process.env.PORT ?? 3000);
}
// 执行启动函数
void bootstrap();
